package com.translate.web.service;

import java.util.List;

import com.basic.service.contract.IBaseService;
import com.translate.web.param.contract.IIdAndUserIdParam;

public interface IBaseTranslateService<T> extends IBaseService<T> {

	/**
	 * 从hash table 中获取数据
	 * @param cacheKey
	 * @param hashKey
	 * @return
	 */
	public T getValueFromHash(
		String cacheKey, 
		String hashKey
	);
	
	/**
	 * 获取列表缓存
	 * @param cacheKey
	 * @param limitNumber
	 * @return
	 */
	public List<T> listToCache(String cacheKey, int limitNumber);
	
	/**
	 * 获取详情
	 * @param <VO>
	 * @param param
	 * @param type
	 * @param key
	 * @param time
	 * @return
	 */
	<VO> VO getDataByIdFromCache(IIdAndUserIdParam param, Class<VO> type, String key, int time);
	
	/**
	 * 获取数据详情 没有缓存
	 * @param param
	 * @return
	 */
	public T getDataDetail(IIdAndUserIdParam param);
	
	/**
	 * 不转换VO
	 * @param param
	 * @param type
	 * @param key
	 * @param time
	 * @return
	 */
	 T getDataDetailFromCache(IIdAndUserIdParam param, String key, int time);
	
	/**
	 * 一对多
	 * @param <VO>
	 * @param param
	 * @param type
	 * @param key
	 * @param time
	 * @return
	 */
	<VO> List<VO> getDatasByIdFromCache(IIdAndUserIdParam param, Class<VO> type, String key, int time);
	
	/**
	 * 一对多 不转换 vo
	 * @param param
	 * @param key
	 * @param time
	 * @return
	 */
	List<T> getDatasFromCache(IIdAndUserIdParam param, String key, int time);
}
